package org.lc.cmd;


import lombok.Getter;
import lombok.Setter;
import org.lc.cmd.util.Lazy;

import java.lang.reflect.Type;

@Getter
@Setter
public class CmdParam {
    /**
     * 参数名称
     */
    protected String name;

    /**
     * 描述
     */
    protected String description;

    /**
     * 是否必传
     */
    protected boolean required = false;

    /**
     * 默认值
     */
    protected Object defaultValue = null;

    /**
     * 数据类型，仅支持基本类型、字符串、包装类型
     */
    protected Class<?> type = Void.class;

    /**
     * 泛型类型，集合时用到
     */
    protected Type genericType = null;

    /**
     * 多次取值
     * 例1(opt参数)：bind --ip 127.0.0.1 --ip 127.0.0.2 DMTFDevice
     * 例2(index参数，循环取值): server add 127.0.0.1 root1 pwd1 127.0.0.2 root2 pwd2
     */
    protected boolean multiple = false;

    /**
     * 参数数据自动补全
     */
    protected Lazy<DataCompleter> completer = null;
}
